package com.condominio.servlet.cpr;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.condominio.facade.Facade;
import com.condominio.model.Pessoa;
import com.condominio.model.Recado;


public class RecadoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    Facade fachada=Facade.getInstance();   
   
  	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session=request.getSession();
    	if(!session.isNew()){
    			Pessoa usu=(Pessoa)session.getAttribute("Usuario");
    		if(usu==null) {response.sendRedirect("/Condominio");return;}
    		List<Recado> pe;
    		if(usu.getPrivilegio()==1){
    			 pe=fachada.findAllRecado();
    		}else{
    			 pe=this.listRecadosByDestinatarioAp(usu);
    		}
		session.setAttribute("recados", pe);
		response.sendRedirect("/Condominio/aplicacao/admin/crudRecados.jsp");
		return;}
    	else response.sendRedirect("/Condominio");
    }
	

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session=request.getSession();
		boolean err=false;
		
		if (!session.isNew()){
   		if(session.getAttribute("Usuario")==null){ response.sendRedirect("/Condominio");return;}
   		session.setAttribute("erro", err);
		String s=request.getParameter("op");
		char op=s.charAt(0);
		
		
		
		Recado r=new Recado();		
		switch(op){
			case 'c':{
				try{
					
				
					String titulo=request.getParameter("titulo_recado");
					String descricao=request.getParameter("descricao_recado");
					int ap=Integer.parseInt(request.getParameter("ap_pessoa"));
					boolean all=Boolean.parseBoolean(request.getParameter("chk_all"));
					if(all){
						r.setDescricao(descricao);
						r.setTitulo(titulo);
						List<Pessoa> pess=fachada.findAllPessoa();
						for(Pessoa p:pess){
							p.addRecado(r);
							r.setPessoa(p);
							cadastrarRecado(r);
						}
						break;
						
					}
					Pessoa pes=new Pessoa();
					
					pes.setApartamento(ap);
					Pessoa p=fachada.findPessoaByAP(pes);
					r.setDescricao(descricao);
					r.setTitulo(titulo);
					r.setPessoa(p);
					p.addRecado(r);
					err=!cadastrarRecado(r);
				
				
					}catch(NumberFormatException e){
					err=true;
					break;
				}
				
				break;}
			
			case 'r':{
				
				
				
				findRecado(r);
				break;}
			
			case 'l':{
				Pessoa p=(Pessoa)session.getAttribute("Usuario");
				List<Recado> re=this.listRecadosByDestinatarioAp(p);
				request.setAttribute("recados", re);
				RequestDispatcher view=request.getRequestDispatcher("/Condominio/aplicacao/admin/crudRecados.jsp");
				view.forward(request,response);
				return;
			}
			
			case 'u':{
				/*String titulo=request.getParameter("titulo_recado");
				String descricao=request.getParameter("descricao_recado");
				int ap=Integer.parseInt(request.getParameter("apartamento_pessoa"));
				Pessoa pes=new Pessoa();
				
				String nome=request.getParameter("nome_pessoa");
				String login=request.getParameter("login_pessoa");
				String senha=request.getParameter("senha_pessoa");
				try{
				int privilegio=Integer.parseInt(request.getParameter("priv_pessoa"));
				int ap=Integer.parseInt(request.getParameter("ap_pessoa"));
				Recado pe=(Recado) session.getAttribute("pessoa");
				p.setNome(nome);
				p.setLogin(login);
				p.setSenha(senha);
				p.setPrivilegio(privilegio);
				p.setApartamento(ap);
				p.setId(pe.getId());
				err=!atualizarRecado(p);

				}catch(NumberFormatException e){
					err=true;
					break;
				}*/
				break;
			}
			case 'p':{/*
				int ap=Integer.parseInt(request.getParameter("ap_pessoa"));
				p.setApartamento(ap);
				Recado pes=fachada.findRecadoByAP(p);
				if (pes!=null){
					session.setAttribute("pessoa", pes);
					response.sendRedirect("/Condominio/aplicacao/admin/atualizarRecado.jsp");
					return;
				}
				err=true;
			}*/
				break;}
			
			case 'd':{
				
			/*	int ap=Integer.parseInt(request.getParameter("ap_pessoa"));
				Pessoa p=new Pessoa();
				p.setApartamento(ap);
				Pessoa pes=fachada.findPessoaByAP(p);

				pes.addRecado(r);
				r.setPessoa(pes);
				Recado logada=(Recado)session.getAttribute("Usuario");
				err=!fachada.excluirRecado(p);
			*/
				break;
			}
			
			default :{
				Pessoa p=(Pessoa)session.getAttribute("Usuario");
				List<Recado> re=this.listRecadosByDestinatarioAp(p);
				session.setAttribute("recados", re);
				response.sendRedirect("/Condominio/aplicacao/admin/crudRecados.jsp");
				//RequestDispatcher view=request.getRequestDispatcher("condominos.jsp");
				//view.forward(request,response);
				return;
			}
		}
		Pessoa p=(Pessoa)session.getAttribute("Usuario");
		List<Recado> re=this.listRecadosByDestinatarioAp(p);

	//	request.setAttribute("pessoas", pe);
		session.setAttribute("recados", re);
		session.setAttribute("erro",err);
	//	RequestDispatcher view=request.getRequestDispatcher("condominos.jsp");
	//	view.forward(request,response);
		response.sendRedirect("/Condominio/aplicacao/admin/crudRecados.jsp");
		}
		else{
			response.sendRedirect("/Condominio");
		}

	}
	
	private List<Recado> listRecadosByDestinatarioAp(Pessoa p) {
		return fachada.findAllRecadoByDestinatarioAp(p);
	}


	public boolean cadastrarRecado(Recado r){
		return fachada.cadastrarRecado(r);
	}
	public Recado findRecado(Recado r){
		return fachada.findRecado(r);

	}


}
